package cn.iocoder.yudao.module.erp.controller.admin.product.vo.product;

import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.core.JsonToken;
import com.fasterxml.jackson.databind.DeserializationContext;
import com.fasterxml.jackson.databind.JsonDeserializer;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

/**
 * 配件字段自定义反序列化器
 * 支持JSON数组和字符串两种格式
 */
public class AccessoriesDeserializer extends JsonDeserializer<String> {

    @Override
    public String deserialize(JsonParser p, DeserializationContext ctxt) throws IOException {
        JsonToken token = p.getCurrentToken();
        
        if (token == JsonToken.START_ARRAY) {
            // 处理JSON数组格式
            List<String> accessoriesList = new ArrayList<>();
            while (p.nextToken() != JsonToken.END_ARRAY) {
                if (p.getCurrentToken() == JsonToken.VALUE_STRING) {
                    accessoriesList.add(p.getValueAsString());
                }
            }
            // 将数组转换为逗号分隔的字符串
            return String.join(",", accessoriesList);
        } else if (token == JsonToken.VALUE_STRING) {
            // 处理字符串格式
            return p.getValueAsString();
        } else if (token == JsonToken.VALUE_NULL) {
            // 处理null值
            return null;
        }
        
        // 其他情况，尝试获取字符串值
        return p.getValueAsString();
    }
}




